table of contents
GETPASS(3) | Podręcznik programisty Linuksa | GETPASS(3) |
NAZWA¶
getpass - wczytanie hasła
SKŁADNIA¶
#include <unistd.h>
char *getpass( const char * prompt );
OPIS¶
Funkcja ta jest przestarzała. Nie należy jej używać.
Funkcja getpass() otwiera /dev/tty (terminal sterujący procesu), wyprowadza napis prompt, wyłącza echo, odczytuje jedną linię ("hasło"), odtwarza stan terminala i zamyka /dev/tty.
WARTOŚĆ ZWRACANA¶
Funkcja getpass zwraca wskaźnik do statycznego bufora zawierającego hasło (pierwsze PASS_MAX bajtów) bez kończącego znaku nowej linii, zakończone znakiem NUL. Bufor ten może zostać nadpisany przez późniejsze wywołania funkcji. W przypadku błędu, odtwarzany jest stan terminala, odpowiednio ustawiane errno, i zwracane NULL.
BŁĘDY¶
Funkcja może zakończyć się niepomyślnie, gdy
- ENXIO
- Proces nie posiada terminala sterującego.
UWAGI¶
Dla libc4 i libc5 tekst zachęty ("prompt") nie jest wypisywany na /dev/tty, ale na stderr. Ponadto, jeśli nie można otworzyć /dev/tty, to hasło jest odczytywane z stdin. Bufor statyczny ma długość 128, więc zwracanych jest tylko pierwszych 127 bajtów hasła. Podczas odczytywania hasła wyłączone jest generowanie sygnałów (SIGINT, SIGQUIT, SIGSTOP, SIGTSTOP), a odpowiadające im znaki (zwykle control-C, control-\, control-Z i control-Y) są przesyłane jako część hasła. Począwszy od libc 5.4.19, wyłączona jest edycja linii, tak więc również cofanie (backspace) i jemu podobne będą widziane jako część hasła.
Dla glibc2, jeśli nie można otworzyć /dev/tty, to tekst zachęty jest wypisywany na stderr, a hasło jest odczytywane z stdin. Nie ma natomiast ograniczenia na długość hasła. Wyłączona jest edycja linii.
Zgodnie z SUSv2, jeśli wartość PASS_MAX jest mniejsza niż 8, to musi być zdefiniowana w <limits.h>, a w każdym przypadku można ją otrzymać za pomocą sysconf(_SC_PASS_MAX). Jednakże, POSIX.2 odchodzi od stałych PASS_MAX i _SC_PASS_MAX oraz od funkcji getpass (). Libc4 i libc5 nigdy nie wspierały PASS_MAX ani _SC_PASS_MAX. Glibc2 akceptuje _SC_PASS_MAX i zwraca BUFSIZ (np. 8192).
PLIKI¶
/dev/tty
ZOBACZ TAKŻE¶
HISTORIA¶
Funkcja getpass pojawiła się w Wersji 7 AT&T UNIX.
USTERKI¶
Proces wywołujący funkcję powinien wyzerować hasło natychmiast, gdy tylko będzie to możliwe, aby uniknąć pozostawania jawnego hasła widocznym w przestrzeni adresowej procesu.
2000-12-05 | Linux |